In many cases, it can be useful to have computer applications from different sources or of different generations, or programmed for different operating systems, coexist on the same computer
An operating system may be described as a software entity serving as an intermediary between computer applications and the hardware resources they use. The operating system is accessible from an application through a set of instructions, sometimes called the “interior decor,” which work based on a set of rules defining the use of a computer's resources, the functionalities accessible to an operator or to a programming language, and the operating mode of these functionalities.
Such a computer can be composed of a single independent machine, or of several machines or parts of machines cooperating with one another so as to constitute a global hardware platform, for example through a distributed architecture that includes several processors, or several computers working in cooperation and sharing or distributing some of their resources among them.
For example, in conjunction with the evolution or upgrading of the computer hardware used for a computer application, the operating specifications of the available hardware change, particularly with respect to their operating systems. The latter can thus become less compatible, or incompatible, over several different versions, or from one computer model to another.
When some of these applications exist and have been used for a certain length of time, or by a certain number of users or businesses, it may be less costly in terms of both time and money to keep using an older application, particularly one that is well adapted to a given need.
Certain applications may also be available only for a certain operating system, while the needs or the hardware they handle exist on computers that are using another operating system.
It is therefore useful to be able to make an application executed by a certain operating system coexist with other applications executed by one or more other operating systems, and to have them communicate in order to interact with one another when they handle common data or software objects.
For purposes of application standardization, personnel training, or marketing strategy, it is also useful to be able to use the same operating system, qualified as “portable,” on machines of various types. Rather than programming a specific version of this operating system for each of these machines, it is known to create a single version capable of being executed by another “basic” operating system that is already available for these various machines. In this case, it is said that this portable operating system runs “on top of” the basic operating system of the machine.
For example, the “GCOS7” operating system by “Bull” (registered trademarks of BULL S. A., a French corporation, hereinafter referred to as “Bull”) can be used in the form of a software environment constituting a virtual machine, called“V7000” or “Diane,” which itself runs on any hardware machine equipped with the Microsoft“Windows NT” operating system (registered trademarks). Thus, applications developed for a computer using“GCOS7,” such as the“DPS7000” by Bull, can be used on any machine in which there is an existing version of “Windows NT.”
In order to prevent any conflicts between these various operating systems, which use the available resources in accordance with different rules, each of them must use different parts of these resources, particularly when it comes to memory. The coexistence of several programs that are heterogeneous, i.e., that use different operating systems, will therefore use more resources overall than if they were to share part of them for the data they have in common.
Moreover, the data or software objects that must be communicated between one program and another, or between two of their processes, must be processed by a communication protocol that is compatible with both systems, like a file exchange protocol. This file exchange protocol could be, for example, a protocol like “FTP (“File Transfer Protocol”), as illustrated in FIG. 5. In order to be compatible with several different operating systems, such communication protocols go through a certain number of intermediate steps of increasing complexity. These steps are performed, first, to organize the data to be sent into a common format, and then to decode this format and restore the data to the appropriate form once received. These various steps correspond, for example, to the various “communication layers” as defined by the Operating System Instruction (OSI). In the case of the FTP protocol, these data could, for example, be serialized, then encoded using the TCP/IP protocol, and then transmitted using the FTP protocol, prior to being decoded and stored by the destination process.
Such steps result in a substantial slowdown in the communications between two processes subject to two different operating systems, and a complexity that can be a source of errors or risks when the data are stored in the same machine or hardware platform.
Furthermore, it is also very important for reliability, as well as for application security, that the running of one of the operating systems and its applications does not risk interfering in the running of the other one. The access to and utilization of the resources of the hardware platform by each of them must therefore be organized so as to be as airtight as possible between the two environments.
In order to reduce problems in the maintenance or monitoring of the applications, it is also important for the functionalities that allow the coexistence to require as little modification as possible, both in the applications involved and in the various components of the operating systems that must coexist and communicate.
In order to avoid slowing down one of the processes during a data transfer between two heterogeneous processes, it is also useful for a sending process to be able to make the data available to another process using an asynchronous method, i.e. without waiting for the destination process to be ready or available.